home *** CD-ROM | disk | FTP | other *** search
/ Sky at Night 2007 June / SAN CD 6-2007 CD-ROM 25.iso / pc / Software / AstroGrav_Win / Java / jre1.6.0 / lib / rt.jar / java / beans / Encoder.class (.txt) < prev    next >
Encoding:
Java Class File  |  2006-11-29  |  3.2 KB  |  118 lines

  1. package java.beans;
  2.  
  3. import java.util.HashMap;
  4. import java.util.IdentityHashMap;
  5. import java.util.Map;
  6.  
  7. public class Encoder {
  8.    private Map bindings = new IdentityHashMap();
  9.    private ExceptionListener exceptionListener;
  10.    boolean executeStatements = true;
  11.    private Map attributes;
  12.  
  13.    protected void writeObject(Object var1) {
  14.       if (var1 != this) {
  15.          PersistenceDelegate var2 = this.getPersistenceDelegate(var1 == null ? null : var1.getClass());
  16.          var2.writeObject(var1, this);
  17.       }
  18.    }
  19.  
  20.    public void setExceptionListener(ExceptionListener var1) {
  21.       this.exceptionListener = var1;
  22.    }
  23.  
  24.    public ExceptionListener getExceptionListener() {
  25.       return this.exceptionListener != null ? this.exceptionListener : Statement.defaultExceptionListener;
  26.    }
  27.  
  28.    Object getValue(Expression var1) {
  29.       try {
  30.          return var1 == null ? null : var1.getValue();
  31.       } catch (Exception var3) {
  32.          this.getExceptionListener().exceptionThrown(var3);
  33.          throw new RuntimeException("failed to evaluate: " + var1.toString());
  34.       }
  35.    }
  36.  
  37.    public PersistenceDelegate getPersistenceDelegate(Class<?> var1) {
  38.       return MetaData.getPersistenceDelegate(var1);
  39.    }
  40.  
  41.    public void setPersistenceDelegate(Class<?> var1, PersistenceDelegate var2) {
  42.       MetaData.setPersistenceDelegate(var1, var2);
  43.    }
  44.  
  45.    public Object remove(Object var1) {
  46.       Expression var2 = (Expression)this.bindings.remove(var1);
  47.       return this.getValue(var2);
  48.    }
  49.  
  50.    public Object get(Object var1) {
  51.       if (var1 != null && var1 != this && var1.getClass() != String.class) {
  52.          Expression var2 = (Expression)this.bindings.get(var1);
  53.          return this.getValue(var2);
  54.       } else {
  55.          return var1;
  56.       }
  57.    }
  58.  
  59.    private Object writeObject1(Object var1) {
  60.       Object var2 = this.get(var1);
  61.       if (var2 == null) {
  62.          this.writeObject(var1);
  63.          var2 = this.get(var1);
  64.       }
  65.  
  66.       return var2;
  67.    }
  68.  
  69.    private Statement cloneStatement(Statement var1) {
  70.       Object var2 = var1.getTarget();
  71.       Object var3 = this.writeObject1(var2);
  72.       Object[] var4 = var1.getArguments();
  73.       Object[] var5 = new Object[var4.length];
  74.  
  75.       for(int var6 = 0; var6 < var4.length; ++var6) {
  76.          var5[var6] = this.writeObject1(var4[var6]);
  77.       }
  78.  
  79.       return (Statement)(var1.getClass() == Statement.class ? new Statement(var3, var1.getMethodName(), var5) : new Expression(var3, var1.getMethodName(), var5));
  80.    }
  81.  
  82.    public void writeStatement(Statement var1) {
  83.       Statement var2 = this.cloneStatement(var1);
  84.       if (var1.getTarget() != this && this.executeStatements) {
  85.          try {
  86.             var2.execute();
  87.          } catch (Exception var4) {
  88.             this.getExceptionListener().exceptionThrown(new Exception("Encoder: discarding statement " + var2, var4));
  89.          }
  90.       }
  91.  
  92.    }
  93.  
  94.    public void writeExpression(Expression var1) {
  95.       Object var2 = this.getValue(var1);
  96.       if (this.get(var2) == null) {
  97.          this.bindings.put(var2, (Expression)this.cloneStatement(var1));
  98.          this.writeObject(var2);
  99.       }
  100.    }
  101.  
  102.    void clear() {
  103.       this.bindings.clear();
  104.    }
  105.  
  106.    void setAttribute(Object var1, Object var2) {
  107.       if (this.attributes == null) {
  108.          this.attributes = new HashMap();
  109.       }
  110.  
  111.       this.attributes.put(var1, var2);
  112.    }
  113.  
  114.    Object getAttribute(Object var1) {
  115.       return this.attributes == null ? null : this.attributes.get(var1);
  116.    }
  117. }
  118.